package com.hucsmn.stumansys.service;

import com.hucsmn.stumansys.entity.Admin;
import com.hucsmn.stumansys.service.impl.AdminServiceImpl;

import java.util.List;

/**
 * 管理员账户相关业务逻辑。
 * @author hucsmn
 */
public interface AdminService {
    /**
     * 获取 AdminService 实现类的实例对象。
     * @return AdminService 实例。
     */
    static AdminService getInstance() {
        return new AdminServiceImpl();
    }

    /**
     * 登录账户，成功则设置 ID。
     * @param admin 管理员账户。
     * @return 是否成功。
     */
    boolean login(Admin admin);

    /**
     * 注册账户，成功则设置 ID。
     * @param admin 管理员账户。
     * @return 是否成功。
     */
    boolean register(Admin admin);

    /**
     * 注销账户。
     * @param id 管理员账户 ID。
     * @return 是否成功。
     */
    boolean unregister(int id);

    /**
     * 通过 ID 修改账户名、密码。
     * @param admin 管理员账户。
     * @return 是否成功。
     */
    boolean modify(Admin admin);

    /**
     * 查找账户名是否存在。
     * @param name 管理员账户名。
     * @return 查询成功且存在返回 true，否则返回 false。
     */
    boolean exists(String name);

    /**
     * 查找账户名列表，可选提供一个搜索前缀，查找结果按照升序排列。
     * @param prefix 搜索前缀，为空时查找全部账户名列表。
     * @return 账户名列表，查询失败返回 null。
     */
    List<String> names(String prefix);
}
